package com.siwei.mes.service;

import com.github.pagehelper.PageInfo;
import com.siwei.mes.common.query.PageQuery;
import com.siwei.mes.entity.Experiment;
import com.siwei.mes.entity.tgl.TglItemorder;
import com.siwei.mes.entity.tgl.TglTrwd;

import java.util.List;

/**
 * 试验台账(Experiment)表服务接口
 *
 * @author linzi
 * @since 2023-12-18 22:11:47
 */
public interface ExperimentService {

    /**
     * 新增
     *
     * @param entity
     * @return
     */
    Long create(Experiment entity);

    /**
     * 修改
     *
     * @param entity
     */
    void update(Experiment entity);

    /**
     * 删除
     *
     * @param id
     */
    void delete(Long id);

    /**
     * 获取所有分组  分页
     *
     * @param query
     * @return
     */
    PageInfo<Experiment> getPage(PageQuery<Experiment, Experiment> query);

    /**
     * 根据id查询
     *
     * @param id
     * @return
     */
    Experiment loadById(Long id);

    /**
     * 获取所有
     *
     * @param entity
     * @return
     */
    List<Experiment> getAll(Experiment entity);

    /**
     * 接收
     *
     * @param id
     */
    void accept(Long id);

    /**
     * 完成
     *
     * @param id
     */
    void finish(Long id);

    /**
     * 拒绝
     *
     * @param id
     */
    void refuse(Long id);

    /**
     * 根据小票信息生成试验台账
     *
     * @param entity
     * @param checkType         1-快检 2-批检
     * @param entrustExperiment 委托试验
     * @return
     */
    Experiment getExperimentInfoByItemOrderInfo(TglItemorder entity, Integer checkType, String entrustExperiment);

    /**
     * 获取最新的总数据
     *
     * @param entity
     * @return
     */
    int getAllCount(Experiment entity);

    /**
     * 根据任务信息生成使用台账
     *
     * @param tglTrwd   tgl任务单信息
     * @param checkType 1-快检 2-批检
     * @return
     */
    Experiment getExperimentInfoByTglTrwdInfo(TglTrwd tglTrwd, Integer checkType);
}
